function print_bench_results(result, solver_name, separate_figs)

    if nargin < 3
        separate_figs = false;
    end

    if separate_figs
        mf = spx.graphics.Figures;


        mf.new_figure('Clustering error');
        semilogx (result.num_points_arr, result.clustering_error_perc_arr, '-s');
        xlabel('Points');
        ylabel('Clustering error (%)');
        grid on;

        mf.new_figure('Clustering accuracy');
        semilogx (result.num_points_arr, result.clustering_acc_perc_arr, '-s');
        xlabel('Points');
        ylabel('Clustering accuracy (%)');
        ylim([40 100]);
        grid on;

        mf.new_figure('Subspace preserving representation error');
        semilogx (result.num_points_arr, result.spr_error_arr * 100, '-s');
        xlabel('Points');
        ylabel('Subspace preserving representation error (%)');
        ylim([0 50]);
        grid on;

        mf.new_figure('Subspace preserving representation percentage');
        semilogx (result.num_points_arr, result.spr_perc_arr, '-s');
        xlabel('Points');
        ylabel('Subspace preserving representation percentage (%)');
        ylim([0 100]);
        grid on;


        mf.new_figure('Connectivity');
        semilogx (result.num_points_arr, result.connectivity_arr, '-s');
        xlabel('Points');
        ylabel('Connectivity');
        ylim([0 0.2]);
        grid on;

        mf.new_figure('Computation time');
        loglog (result.num_points_arr, result.elapsed_time_arr, '-s');
        xlabel('Points');
        ylabel('Computation time (seconds)');
        grid on;
    else
        spx.graphics.figure.full_screen(solver_name);

        subplot(231);
        semilogx (result.num_points_arr, result.clustering_error_perc_arr, '-s');
        xlabel('Points');
        ylabel('Clustering error (%)');
        grid on;

        subplot(232);
        semilogx (result.num_points_arr, result.clustering_acc_perc_arr, '-s');
        xlabel('Points');
        ylabel('Clustering accuracy (%)');
        ylim([40 100]);
        grid on;

        subplot(233);
        semilogx (result.num_points_arr, result.spr_error_arr * 100, '-s');
        xlabel('Points');
        ylabel('Subspace preserving representation error (%)');
        ylim([0 50]);
        grid on;

        subplot(234);
        semilogx (result.num_points_arr, result.spr_perc_arr, '-s');
        xlabel('Points');
        ylabel('Subspace preserving representation percentage (%)');
        ylim([0 100]);
        grid on;


        subplot(235);
        semilogx (result.num_points_arr, result.connectivity_arr, '-s');
        xlabel('Points');
        ylabel('Connectivity');
        ylim([0 0.2]);
        grid on;

        subplot(236);
        loglog (result.num_points_arr, result.elapsed_time_arr, '-s');
        xlabel('Points');
        ylabel('Computation time (seconds)');
        grid on;
    end

end
